/*
 * File:   menu_commande.c
 * Author: DIOP et KACOUCHIA
 */


#include <stdio.h>
#include <stdlib.h>
#include "typesprimitifs.h"
#include "commande.h"
#include "menu_commande.h"
#include "balance.h"

void modifier_quantite_produit(POINTEUR_COMMANDE pc, ENTIER_POSITIF choix)
{    CHAINE saisie;
     ENTIER quantite=-1;
     ENTIER i = recherche_ligne(pc,choix);
     do{
            printf("\n\n\nQuantite actuelle : %d\n",pc->lignes[i]->quantite);
            printf("Quantite maximale disponible : %d.\n",
                            (pc->lignes[i]->p->quantite_disponible));
            printf("Veuillez entrer la nouvelle quantite de votre produit : ");
            fgets(saisie, MAX_CHAR, stdin);
            sscanf(saisie, "%d", &quantite);
            if((quantite>=0) && (quantite<=(pc->lignes[i]->p->quantite_disponible))){
                           modifier_ligne_commande(pc,choix,quantite);
                           printf("\nLa quantite de votre produit a ete correctement changee.\n");
                           afficher_commande(pc);
                           }
            else            {
                            printf("\nQuantite invalide.\n");
                            quantite=-1;
                            }
            }while (quantite==-1);
}

void modifier_produit(POINTEUR_COMMANDE pc)
{    CHAINE saisie1;
     ENTIER choix=-1;
     CHAINE saisie2;
     ENTIER rep=-1;
     do
     {      printf("\n\n0 : Retour a la commande \n Choisissez un produit a modifier: ");
            fgets(saisie1, MAX_CHAR, stdin);
            sscanf(saisie1, "%d", &choix);
            if(choix==0)break;else
            if((choix>0)&&(choix<=pc->nb_lignes))
            {           
                        printf("\nVous avez selectionne le produit suivant :\n");
                        afficher_ligne(pc->lignes[recherche_ligne(pc,choix)]);
                        do {
                           printf("\n\n0 : Retour a la commande\n");
                           printf("1 : Modifier la quantite\n");
                           printf("2 : Supprimer le produit\n");
                           printf("Votre selection : ");
            
                           fgets(saisie2, MAX_CHAR, stdin);
                           sscanf(saisie2, "%d", &rep);

                           switch (rep) {
                                        case 0:break;
                                        case 1:modifier_quantite_produit(pc
                                                                ,choix);break;
                                        case 2:supprimer_ligne_commande(pc,
                                                                  choix);
                                        printf("\nSuppression effectuee");
                                        afficher_commande(pc);break;
                                        default: printf("\n Erreur!! Saisissez un nombre correct \n \n");
                                                 rep=-1;
                                                 break;
                                        }
                           } while (rep==-1);            
            }else printf("Choix invalide.\n"),choix=-1;
     }while (choix==-1);
}
 
void aff_validation(POINTEUR_COMMANDE pc)
{
   CHAINE saisie;                                                      
   ENTIER rep=-1; 
   afficher_commande(pc);
   do
   {
           printf("0 : Pour retourner au menu principal \n"); 
           printf("1 : Pour modifier un produit \n");
           printf("2: Pour valider votre commande \n");
     
           fgets(saisie, MAX_CHAR, stdin);
           sscanf(saisie, "%d", &rep);
     
     switch (rep)
      {
        case 0: break;
        case 1: modifier_produit(pc);rep=-1; break;
        case 2: menu_finalisation_achat(pc);rep=-1;break;
        default:printf("Vous avez fait une erreur\n"); rep=-1; break;
      }
   }
while(rep==-1); 
}

void menu_commande(POINTEUR_COMMANDE pc)
{   
    aff_validation(pc);

}
     
     
  
